using System;
using System.Collections.Generic;
using EntitiesAndMappings.Entities;
using ProyectoSelva.Const;

namespace ProyectoSelva.Dtos
{
    public class ContratoDTO
    {
        public String DescripcionTipoDocumento { get; set; }

        public String NumeroDocumento { get; set; }

        public String Nombres { get; set; }

        public String Apellidos { get; set; }

        public String Celular { get; set; }

        public String DescripcionLote { get; set; }

        public String DescripcionProyecto { get; set; }

        public String DescripcionCondicionContrato { get; set; }

        public String DescripcionEmpresa { get; set; }

        public String DescripcionCargo { get; set; }

        public String DescripcionEstatus { get; set; }

        public double Sueldo { get; set; }

        public DateTime? FechaInicioContrato { get; set; }

        public DateTime ? FechaTerminoContrato { get; set; }

        public DateTime? FechaLiquidacion { get; set; }

        public String DescripcionMotivoLiquidacion { get; set; }

        public String Observacion { get; set; }

        public String ObservacionRenovacion { get; set; }

        public Contrato Contrato { get; set; }

        public DateTime ? FechaIngresoCampo { get; set; }

        public DateTime ? FechaSalidaCampo { get; set; }

        public String Usuario { get; set; }

        public static IList<ContratoDTO> AListaDTO(IList<Contrato> contratos)
        {
            IList<ContratoDTO> contratosDTO;
            if (contratos == null)
            {
                contratosDTO = null;
            }
            else
            {
                contratosDTO = new List<ContratoDTO>(contratos.Count);
                foreach (var contrato in contratos)
                {
                    contratosDTO.Add(new ContratoDTO
                    {
                        NumeroDocumento = contrato.Trabajador.NumeroDocumento,
                        DescripcionTipoDocumento = contrato.Trabajador.TipoDocumento.Descripcion,
                        Nombres = contrato.Trabajador.Nombres,
                        Apellidos = contrato.Trabajador.Apellidos,
                        Celular = contrato.Trabajador.TelefonoCelular,
                        DescripcionProyecto = contrato.Proyecto.Descripcion,
                        DescripcionLote = contrato.Lote.Descripcion,
                        DescripcionCondicionContrato = (Estado.Activo.Equals(contrato.Estado) ? "Activo" : Estado.Inactivo.Equals(contrato.Estado)? "Inactivo" : "Eliminado"),
                        DescripcionCargo = contrato.TipoCargo.Descripcion,
                        DescripcionEmpresa = contrato.Empresa.Descripcion,
                        DescripcionEstatus = contrato.StatusContrato.Descripcion,
                        FechaInicioContrato = contrato.FechaInicioContrato,
                        FechaTerminoContrato = contrato.FechaTerminoContrato,
                        FechaLiquidacion = contrato.FechaLiquidacion,
                        DescripcionMotivoLiquidacion = (contrato.MotivoLiquidacion == null) ? null : contrato.MotivoLiquidacion.Descripcion,
                        Observacion = contrato.Observaciones,
                        ObservacionRenovacion = contrato.ObservacionesRenovacion,
                        FechaIngresoCampo = contrato.FechaIngresoCampo,
                        FechaSalidaCampo = contrato.FechaSalidaCampo,
                        Sueldo = contrato.Sueldo,
                        Usuario = contrato.Usuario,
                        Contrato = contrato
                    });
                }
            }
            return contratosDTO;
        }
    }
}